package cn.life.business.notice.dao;

import cn.life.business.notice.entity.po.Notice;
import cn.life.business.notice.entity.po.NoticeUserPo;
import cn.life.business.notice.entity.vo.NoticeVo;
import cn.life.business.user.entity.po.UserInfo;
import cn.life.common.entity.model.MyUserInfo;
import cn.life.common.entity.vo.Pagination;

import java.awt.print.Pageable;
import java.util.List;

/**
 * @Description:
 * @Author 王振宇
 * @Date 2018/7/11
 */
public interface NoticeDao {
    /**
     * @Description:    新增公告
     * @param notice
     * @return:
     * @Author 王振宇
     * @Date 2018/7/11
     */
    Long addNotice(Notice notice);
    /**
     * @Description:    删除公告
     *
     * @param noticeId
     * @return:
     *
     * @Author 王振宇
     * @Date 2018/7/11
     */
    int deleteNotice(long noticeId);
    /**
     * @Description:    删除公告明细
     *
     * @param noticeId
     * @return:
     *
     * @Author 王振宇
     * @Date 2018/7/11
     */
    int deleteNoticeDetail(long noticeId);
    /**
     * @Description:    修改公告
     *
     * @param notice
     * @return:
     *
     * @Author 王振宇
     * @Date 2018/7/11
     */
    int updateNotice(Notice notice);
    /**
     * @Description:    查询公告
     *
     * @param noticeVo
     * @return:
     *
     * @Author 王振宇
     * @Date 2018/7/11
     */
    Pagination<NoticeVo> getAllNoticeInfo(NoticeVo noticeVo);

    /**
     * @Description:    查询单条（页面详情）公告
     *
     * @param noticeVo
     * @return:
     *
     * @Author 王振宇
     * @Date 2018/7/18
     */
    NoticeVo getNotice(NoticeVo noticeVo);
    /**
     * @Description:   增加公告明细信息
     *
     * @param notice
     * @return:
     *
     * @Author 李佳明
     * @Date 2018/8/21 0021 上午 10:17
     */
    int addNoticeDetail(Notice notice);
    /**
     * @Description:    获取公告中人员明细信息
     *
     * @param noticeVo
     * @return:
     *
     * @Author 李佳明
     * @Date 2018/8/21 0021 上午 10:26
     */
    List<NoticeUserPo> getNoticeDetail(NoticeVo noticeVo);

    /**
     * @Description:    修改公告状态（已读、未读）
     *
     * @param noticeUserPo
     * @return:
     *
     * @Author 王振宇
     * @Date 2018/8/22
     */
    int updateNoticeState(NoticeUserPo noticeUserPo);
    /**
     * @Description:    修改用户查询状态
     *
     * @param noticeVo,myUserInfo
     * @return:
     *
     * @Author 李佳明
     * @Date 2018-09-03 上午 10:20
     */
    void updateNoticeReadState(NoticeVo noticeVo, MyUserInfo myUserInfo);
    /**
     * @Description:    查询我的公告未读数量
     *
     * @param projectId,userId
     * @return:
     *
     * @Author 李佳明
     * @Date 2018/12/2 0002 22:29
     */
    Integer queryMyNotReadNumber(Long projectId, Long userId);
}
